任务分解
线性、树、图三种分解结构各适合什么任务形状,以及为什么计划不该在起点冻结
核心要点:
- least-to-most:由易到难拆解后顺序求解
- plan-and-solve:先规划后执行两阶段
- 树/图处理回溯与并行依赖
- 动态重规划:按结果实时更新计划
- 计划不必一开始就冻结
本文讲 agent 怎么把大任务拆成可执行步骤。拆解后从错误中改进见 03-反思与自修复。
为什么要显式分解任务?
核心问题:直接让模型一口气解决复杂任务,不行吗?
直接解容易在复杂任务上漏步、算错、误解语义,显式分解能把难题降为一串可控子问题[1]。Plan-and-Solve 的实验显示,先规划再执行能减少三类典型错误:计算错误、推理步骤遗漏、语义误理解。
分解的价值不只是"拆小",还在于让每一步可检查、可并行、可重试。下面几种策略按"线性→树→图→动态"递进。
least-to-most 和 plan-and-solve 怎么分解?
核心问题:最基础的两种分解思路是什么?
least-to-most 把问题拆成由易到难的子问题序列顺序求解,plan-and-solve 把规划与执行显式分成两阶段。两者都用拆解换取可靠性。
- least-to-most:先分解成从易到难的子问题,再顺序解,每步可用前序答案[2]。它解决了 CoT 难以泛化到比示例更难问题的缺陷——在 SCAN 上仅用 14 个示例达 99%,而 CoT 仅 16%。
- plan-and-solve:第一阶段生成结构化子任务计划,第二阶段按计划执行[1]。这种解耦在多个数据集上大幅超越 zero-shot CoT。
可借鉴的判断:任务有清晰难度梯度就用 least-to-most,任务需要先通盘规划就用 plan-and-solve。
树和图怎么处理更复杂的分解?
核心问题:子任务之间有回溯或并行依赖时,线性序列不够用怎么办?
用树处理需要回溯的搜索,用依赖图处理并行与显式依赖。线性分解假设步骤单向推进,真实任务常需要探索多条路径或并行子任务。
- 树形分解(Tree of Thoughts):把 CoT 推广为树形多路径搜索,配 BFS/DFS + 节点评估,适合需要回溯的规划问题[3]。
- 依赖图(DAG):把任务显式建模为依赖图,支持多模型并行协作(如 HuggingGPT 用依赖图编排多模型)[4]。
依赖图让独立子任务能并行(与 04-编排/05-确定性workflow 的并行分段呼应),让有依赖的子任务按序执行。分解结构应匹配任务的真实依赖形状,而非强行线性化。
计划要不要一开始就定死?
核心问题:一次规划好全部步骤,还是边做边改?
复杂任务的计划应能按已完成结果动态重规划,而非开始时一次性冻结[5]。TDAG 根据已完成子任务的结果实时更新任务图,而不是把计划锁死在起点。
动态重规划的价值在于应对不确定性:子任务的真实结果常偏离预期,固定计划会在第一个意外处崩溃。CodeAct 一类方案用可执行代码统一动作表示,让 agent 在执行反馈中轻量重规划。可借鉴的设计:给规划留重规划的接口——计划是假设,执行结果可以推翻它。
Takeaway
| 知识点 | 核心结论 |
|---|---|
| 为何分解 | 降低漏步/算错/误解,让每步可检查可重试 |
| least-to-most | 由易到难拆解,泛化到比示例更难的问题 |
| plan-and-solve | 规划与执行两阶段解耦,减三类错误 |
| 树与图 | 树处理回溯搜索,DAG 处理并行与显式依赖 |
| 动态重规划 | 按结果实时更新计划,不在起点冻结 |
参考资料
- Wang et al. Plan-and-Solve Prompting. arXiv:2305.04091, 2023. https://arxiv.org/abs/2305.04091
- Zhou et al. Least-to-Most Prompting Enables Complex Reasoning in Large Language Models. arXiv:2205.10625, 2022. https://arxiv.org/abs/2205.10625
- Yao et al. Tree of Thoughts: Deliberate Problem Solving with Large Language Models. arXiv:2305.10601, 2023. https://arxiv.org/abs/2305.10601
- Shen et al. HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face. arXiv:2303.17580, 2023. https://arxiv.org/abs/2303.17580
- TDAG: A Multi-Agent Framework based on Dynamic Task Decomposition and Agent Generation. arXiv:2402.10178, 2024. https://arxiv.org/abs/2402.10178
延伸阅读
- 03-反思与自修复 — 分解执行后怎么从错误中改进
- 04-编排/05-确定性workflow — 并行分段的 workflow 视角